package co.inventario.presentacion;

import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.PaisDTO;
import co.inventario.modelo.fachada.PaisFachada;

@ManagedBean
public class PaisBean {

	PaisDTO paisDTO;
	ArrayList<PaisDTO> paisDTOlista;

	public PaisBean() {
		paisDTO = new PaisDTO();
		refrescarTablaPais();
	}

	public PaisDTO getPaisDTO() {
		return paisDTO;
	}

	public void setPaisDTO(PaisDTO paisDTO) {
		this.paisDTO = paisDTO;
	}

	public ArrayList<PaisDTO> getPaisDTOlista() {
		return paisDTOlista;
	}

	public void setPaisDTOlista(ArrayList<PaisDTO> paisDTOlista) {
		this.paisDTOlista = paisDTOlista;
	}

	private void refrescarTablaPais() {
		try {
			PaisFachada paisFachada = new PaisFachada();
			paisDTOlista = paisFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido refrescando la tabla Pais en el Bean: " + exception.getMessage());
		}
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (paisDTO.getNvNombrePais() == null || "".equals(paisDTO.getNvNombrePais().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo Pais no puede estar vacio."));
			} else {
				PaisFachada paisFachada = new PaisFachada();
				paisFachada.crear(paisDTO);
				refrescarTablaPais();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha creado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al crear el registro: " + exception.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (paisDTO.getNvNombrePais() == null || "".equals(paisDTO.getNvNombrePais().trim())) {
				context.addMessage(null, new FacesMessage("Error ", "El campo Pais no puede estar vacio."));
			} else {
				PaisFachada paisFachada = new PaisFachada();
				paisFachada.actualizar(paisDTO);
				refrescarTablaPais();
				context.addMessage(null, new FacesMessage("Correcto", "el registro se ha actualizado con exito."));
			}
		} catch (Exception exception) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al actualizar el registro: " + exception.getMessage()));
		}
	}

	public void consultarTodo() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			refrescarTablaPais();
		} catch (Exception excepcion) {
			context.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
